/**
 * @Description: 路由实例
 * @Author: zhen
 * @Date: 2023-10-16
 */
import { createRouter, createWebHistory } from 'vue-router';
import NProgress from '@/plugins/nprogress';
import { staticRouter, errorRouter } from '@/routers/modules/static-router';
import { ROUTER_WHITE_LIST } from '@/constants';

// 创建路由实例
const router = createRouter({
  history: createWebHistory(),
  routes: [...staticRouter, ...errorRouter],
  strict: false,
  scrollBehavior: () => ({ left: 0, top: 0 })
});

/**
 * @description 路由拦截 beforeEach
 * */
router.beforeEach(async (to, from, next) => {
  // const globalStore = GlobalStore()
  console.log(to, from, 'aaaaaa to, from');

  // 1.NProgress 开始
  NProgress.start();

  // 2.动态设置标题
  // const title = import.meta.env.VITE_GLOB_APP_TITLE
  // document.title = to.meta.title || title

  // 3.判断是访问登陆页，有 Token 就在当前页面，没有 Token 重置路由并放行到登陆页
  // if (to.path === LOGIN_URL) {
  //   if (globalStore.token) {
  //     return next(from.fullPath)
  //   }
  //   resetRouter()
  //   return next()
  // }

  // 4.判断访问页面是否在路由白名单地址中，如果存在直接放行
  if (ROUTER_WHITE_LIST.includes(to.path)) {
    return next();
  }
  // if (!globalStore.userName) {
  //   const { result } = await getUserName()
  //   globalStore.setUserName(result)
  // }

  // 5.判断是否有 Token，没有重定向到 login (本地环境不判断)
  // if (import.meta.env.MODE !== 'development' && !Cookies.get('system-tars-token')) {
  //   // 3.重定向到登陆页
  //   window.location = LOGIN_URL
  // }

  // 6.如果没有菜单列表，就重新请求菜单列表并添加动态路由
  // const authStore = AuthStore()
  // authStore.setRouteName(to.name as string)
  // if (!authStore.authMenuListGet.length) {
  //   await initDynamicRouter()
  //   return next({ ...to, replace: true })
  // }

  // 7.正常访问页面
  next();
});

/**
 * @description 路由跳转结束
 * */
router.afterEach(() => {
  NProgress.done();
});

/**
 * @description 路由跳转错误
 * */
router.onError((error) => {
  NProgress.done();
  console.warn('路由错误', error.message);
});

export default router;
